﻿var K_Operacion = { Insertar: 1, Editar: 2, Ver: 3 };
var K_ResultadoAjax = { Exito: 1, Error: 0 };
var K_MensajeSelect = { Todos: 'Todos', Seleccione: 'Seleccione' };

$(function(){
    $("#mvNuevo").dialog({
        modal: true,
        autoOpen: false,
        width: 400,
        height: 270,
        title: "Nuevo Registro de Perfil",
        buttons: {
            "Grabar": insertar,
            "Cerrar": closePopup
        }
    });

    $("#btnLimpiar").on("click", function () {
        $("#txtSistemaFiltro").val("");
        $("#hidCodigoSistemaFiltro").val("");
        $("#ddlModuloFiltro").val("0");
        $("#ddlPerfilFiltro").val("0");
        $("#ddlSituacionFiltro").val("0");
        buscar();
    }).button();

    $("#btnBuscar").on("click", function () {
        buscar();
    }).button();

    $("#btnNuevo").on("click", function () {
        resetPopup();
        $("#hidOpcion").val(K_Operacion.Insertar);
        $("#mvNuevo").dialog('option', 'title', 'Registrar información de Modulo.');
        $("#mvNuevo").dialog("open");
    }).button();

    $("#btnEditar").on("click", function () {
        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas != null) {
            if (filas.length > 0) {
                if (filas.length == 1) {
                    var codigoSel = jQuery("#grid").jqGrid('getRowData', filas[0]).CodigoPerfil;
                    edit(codigoSel);
                } else {
                    alertify.error("Para modificar seleccione sólo un elemento de la lista.");
                }
            } else {
                alertify.error("Seleccione un elemento para modificar.");
            }
        } else {
            alertify.error("Seleccione un elemento para modificar.");
        }
    }).button();

    $("#btnEliminar").on("click", function () {
        var item = new Array();

        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');

        if (filas.length > 0) {
            alertify.confirm("Esta seguro de eliminar los registros seleccionados?", function (e) {
                if (e) {
                    for (var i = 0; i < filas.length; i++) {
                        var codigoSel = (jQuery("#grid").jqGrid('getRowData', filas[i]).CodigoPerfil);
                        item[i] = codigoSel;
                    }
                    eliminar(item);
                } else {
                    alertify.error("Operación eliminación cancelada.");
                }
            });

        } else {
            alertify.error("Seleccione un elemento para eliminar.");
        }
        return false;
    }).button();

    //listarSistema("ddlSistemaFiltro", K_MensajeSelect.Todos);
    initSistemaAutoCompletar("txtSistemaFiltro", "hidCodigoSistemaFiltro");
    listarModulo("ddlModuloFiltro", K_MensajeSelect.Todos);
    listarPerfil("ddlPerfilFiltro", K_MensajeSelect.Todos);

    $("#ddlSistema").on("change", function () {
        var codSistema = $("#ddlSistema").val();
        listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, codSistema);
    });

    buscar();
});

var eliminar = function (item) {
    $.each(item, function (index, i) {
        $.ajax({
            data: { CodigoPerfil: i },
            url: 'Eliminar',
            type: 'POST',
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    alertify.success(dato.message);
                    buscar();
                } else {
                    alertify.success(dato.message);
                }
            }
        });
    });
    return false;
}

var buscar = function () {
    validarSesion();
    var perfil = {
        CodigoSistema: $("#hidCodigoSistemaFiltro").val() == "" ? 0 : $("#hidCodigoSistemaFiltro").val(),
        CodigoModulo: $("#ddlModuloFiltro").val(),
        CodigoPerfil: $("#ddlPerfilFiltro").val(),
        anulado:$("#ddlSituacionFiltro").val()
    };

    $("#grid").jqGrid("clearGridData", true);
    $("#grid").jqGrid('setGridParam', { url: 'ListarPerfilJQGRID', datatype: 'json', mtype: 'POST', postData: perfil }).trigger('reloadGrid');

    jQuery("#grid").jqGrid({
        url: 'ListarPerfilJQGRID',
        datatype: 'json',
        postData: perfil,
        mtype: 'POST',
        colNames: ['Codigo', 'Nombre', 'Descripcion', 'Modulo', 'Situacion', 'Accion'],
        colModel: [
            { name: 'CodigoPerfil', index: 'CodigoPerfil', width: 50, align: 'center' },
            { name: 'Nombre', index: 'Nombre', width: 150, align: 'left', },
            { name: 'Descripcion', index: 'Descripcion', width: 150, align: 'center' },
            { name: 'DescModulo', index: "DescModulo", width: 120, align: 'center' },
            { name: 'Situacion', index: "Situacion", width: 80, align: 'center' },
            { name: 'act', index: 'act', width: 75, sortable: false }, ],
        rowNum: 20,
        pager: jQuery('#pager'),
        rowList: [20, 30, 50],
        sortname: 'Codigo',
        viewrecords: true,
        sortorder: 'asc',
        multiselect: true,
        multiSort: true,
        width: '990',
        height: '200',
        caption: 'Perfiles Registrados',
        ondblClickRow: function (id) { verDeta(id); },
        gridComplete: function () {
            var ids = jQuery("#grid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];
                xview = "<img src='../Imagen/icono/search.png' onclick=\"ver('" + cl + "');\"  />&nbsp;&nbsp;";
                xedit = "<img src='../Imagen/icono/edit.png' onclick=\"edit('" + cl + "');\"  />&nbsp;&nbsp;";
                xdel = "<img src='../Imagen/icono/del.png' onclick=\"del('" + cl + "');\"  /> ";
                jQuery("#grid").jqGrid('setRowData', ids[i], { act: xview + xedit + xdel });
            }
        }

    });
}

var insertar = function () {
    if (ValidarRequeridos()) {
        var perfil = {
            CodigoPerfil: $("#txtCodigo").val(),
            Nombre: $("#txtNombre").val(),
            Descripcion: $("#txtDescripcion").val(),
            Anulado: $("#ddlSituacion").val() == 'A' ? false : true,
            CodigoModulo: $("#ddlModulo").val()
        };
        if ($("#hidOpcion").val() == K_Operacion.Insertar) {
            $.ajax({
                url: 'Insertar',
                data: perfil,
                type: 'POST',
                success: function (response) {
                    var dato = response;
                    validarRedirect(dato);
                    if (dato.result = K_ResultadoAjax.Exito) {
                        alertify.success(dato.message);
                    } else {
                        alertify.error(dato.message);
                    }
                }
            });
        } else if ($("#hidOpcion").val() == K_Operacion.Editar) {
            $.ajax({
                url: 'Actualizar',
                data: perfil,
                type: 'POST',
                success: function (response) {
                    var dato = response;
                    validarRedirect(dato);
                    if (dato.result == K_ResultadoAjax.Exito) {
                        alertify.success(dato.message);
                    } else {
                        alertify.success(dato.message);
                    }
                }
            });
        }
        $("#mvNuevo").dialog("close");
        buscar();
    }
}

var closePopup = function () {
    $("#mvNuevo").dialog("close");
};

function resetPopup() {
    msgOkB("aviso", "");
    limpiarRequerido();

    listarSistema("ddlSistema", K_MensajeSelect.Seleccione, 0);
    listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione,0);

    $("#txtCodigo").val("");
    $("#txtNombre").val("");
    $("#txtDescripcion").val("");

    $("#txtNombre").removeAttr('disabled');
    $("#txtDescripcion").removeAttr('disabled');
    $("#ddlModulo").removeAttr('disabled');
    $("#ddlSituacion").removeAttr('disabled');
}

function edit(id) {
    $("#hidOpcion").val(K_Operacion.Editar);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Actualizar información de Perfil.');
    resetPopup();

    $.ajax({
        data: { CodigoPerfil: id },
        url: 'ObtenerPerfil',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var perfil = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                $("#txtCodigo").val(perfil.CodigoPerfil);
                $("#txtNombre").val(perfil.Nombre);
                $("#txtDescripcion").val(perfil.Descripcion);
                listarSistema("ddlSistema", K_MensajeSelect.Seleccione, perfil.CodigoSistema);
                listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione,perfil.CodigoSistema, perfil.CodigoModulo);
                $("#ddlSituacion").val(perfil.Anulado == false ? 'A' : 'I');
            }
        }
    });
}

function del(id) {
    alertify.confirm("Esta seguro de eliminar el registro?", function (e) {
        if (e) {
            var item = Array();
            item[0] = id;
            eliminar(item);
        } else {
            alertify.error("Operación eliminación cancelada.");
        }
    });
    return false;
}

function ver(id) {
    $("#hidOpcion").val(K_Operacion.Ver);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Información de Perfil.');
    resetPopup();
    $.ajax({
        data: { CodigoPerfil: id },
        url: 'ObtenerPerfil',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var perfil = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                $("#txtCodigo").val(perfil.CodigoPerfil);
                $("#txtNombre").val(perfil.Nombre);
                $("#txtDescripcion").val(perfil.Descripcion);
                listarSistema("ddlSistema", K_MensajeSelect.Seleccione, perfil.CodigoSistema);
                listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, perfil.CodigoSistema, perfil.CodigoModulo);
                $("#ddlSituacion").val(perfil.Anulado == false ? 'A' : 'I');

                $("#txtNombre").attr('disabled', 'disabled');
                $("#txtDescripcion").attr('disabled', 'disabled');
                $("#ddlSistema").prop('disabled', 'disabled');
                $("#ddlModulo").prop('disabled', 'disabled');
                $("#ddlSituacion").prop('disabled', 'disabled');
            }
        }
    });
    return false;
}

